package com.vhr.service;

import com.vhr.VO.SalaryCountVO;
import com.vhr.VO.SalaryVO;
import com.vhr.entities.Employee;
import com.vhr.entities.Salary;
import com.vhr.entities.SalaryToPage;
import com.vhr.entities.SalaryToPageAdmin;

import java.util.Date;
import java.util.List;

public interface ISalaryService {

    /*计算月薪酬*/
    double calculatePersonSalary(Employee emp, Integer month, Integer year);

    /*计算月奖金*/
    double calculateMonthBonus(Employee emp, Integer month, Integer year);

    /*计算月加班补贴*/
    double calculateOvertimeSalary(Employee emp, Integer month, Integer year);

    /*计算月请假扣款*/
    double calculateLeaveFine(Employee emp, Integer month, Integer year);

    /*计算月考勤迟到，旷工那些扣款，存到illegal_fine*/
    double calculateCheck(Employee emp, Integer month, Integer year);

    /*更改补贴方式*/
    int updateWelfare(Employee emp, Integer id);

    /*查看员工的伙食补贴*/
    double LookFoodSalary(Employee employee);

    /*查看员工的出行补贴*/
    double LookTravelSalary(Employee employee);

    /*查看员工的住房补贴*/
    double LookHouseSalary(Employee employee);

    /*计算扣税*/
    double calculateTax(Double salary,Employee employee,Integer month,Integer year);

    /*统计薪资信息*/
    List<SalaryCountVO> countBySalary(Date date);

    /*查询所有员工的所有的工资单:原始数据*/
    List<Salary> selectAllSalary();

    /*查询所有员工的所有的工资单*/
    List<SalaryToPageAdmin> selectAllEmpSalary();

    /*查询单个员工不同月的所有的工资单*/
    List<SalaryToPage> selectOneEmpSalary(Employee employee);

    /*查询单个员工不同月的所有的工资单：原始数据*/
    List<Salary> selectByEmpIdSalary(Employee employee);

    /*管理员：根据条件根据员工名和时间和部门筛选显示部分员工*/
    List<SalaryVO> selectSomeBodyByNameAndTimeAndDept(String empName,Integer deptId,String payTime);

    /*计算月工资,很高的效率*/
    void countPersonSalary(Employee emp, Integer month, Integer year);
}
